package poc.scc.core.controladoria;

import java.io.Serializable;
import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
@Entity
@SequenceGenerator(name="seq",sequenceName="seq_questao")
public class Questao implements Serializable, Comparable<Questao>{
	private static final long serialVersionUID = -668732934571822651L;
	
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="seq")
	private Long id;
	
	@ManyToOne
	@JoinColumn(name="questionario_id")
	private Questionario questionario;
	
	@ManyToOne
	@JoinColumn(name="questao_pai_id")
	private Questao questaoPai;
	
	private String descricao;
	
	@Column(name="numero_ordem")
	private Integer numeroOrdem;
	
	private Boolean composta;
	
	@OneToMany
	@JoinColumn(name="questao_pai_id")
	private List<Questao> questoes;
	
	private String label;
	
	public Questao() {
		questionario = new Questionario();
	}
	
	@Override
	public int compareTo(Questao q2) {
		return this.getLabel().compareTo(q2.getLabel());
	}
	
	public String createClassCss(){
		StringBuilder cssClass = new StringBuilder("questao-nivel-"); 
		if(label!=null){
			Integer numLevel = (label.replace(".", ":").split(":")).length;
			cssClass.append(numLevel);
		}
		if(composta)
			cssClass.append("-composta");
		
		return cssClass.toString();
	}
	
	
	public String getLabel(){	
		return label;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long identificador) {
		this.id = identificador;
	}

	public Questionario getQuestionario() {
		return questionario;
	}

	public void setQuestionario(Questionario questionario) {
		this.questionario = questionario;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public Integer getNumeroOrdem() {
		return numeroOrdem;
	}

	public void setNumeroOrdem(Integer numeroOrdem) {
		this.numeroOrdem = numeroOrdem;
	}

	public List<Questao> getQuestoes() {
		return questoes;
	}

	public void setQuestoes(List<Questao> questoes) {
		this.questoes = questoes;
	}

	@Override
	public String toString() {
		return "Questao [identificador=" + id + ", questionario="
				+ questionario + ", descricao=" + descricao + ", numeroOrdem="
				+ numeroOrdem + ", questaoComposta=" + composta + "]";
	}


	public Questao getQuestaoPai() {
		return questaoPai;
	}

	public void setQuestaoPai(Questao questaoPai) {
		this.questaoPai = questaoPai;
	}

	public Boolean getComposta() {
		return composta;
	}

	public void setComposta(Boolean composta) {
		this.composta = composta;
	}
	public void setLabel(String createLabel) {
		
		label = createLabel;
	}
}